Adaptive bitrate streaming (ABS) is a technique used for both live and on-demand (e.g., video-on-demand (VOD)) content streaming. Examples of ABS include Hypertext Transfer Protocol (HTTP) Live Streaming (HLS), Smooth Streaming, HTTP Dynamic Streaming (HDS), and Moving Picture Experts Group-Dynamic Adaptive Streaming over HTTP (MPEG-DASH). ABS encodes an item of content (e.g., a video file) into multiple desired bitrate streams, and segments each bitrate stream into a sequence of small chunks or segments (e.g., of seconds in length). A file, called a manifest file or playlist file, is used to specify information of available streams and variant bitrates for the item of streaming content, and also specifies the HTTP locations of the chunks or segments of the item of streaming content. The media player retrieves the manifest or playlist file, identifies an acceptable variant bitrate based on resource constraints such as network bandwidth and local CPU capacity, retrieves the HTTP locations of the chunks or segments, and uses the retrieved HTTP locations of the chunks or segments to further retrieve the sequence of content segments. The media player, during playback, may switch between streams of variant bitrates based on changes in real-time resource constraints, such as changes in current network bandwidth or current CPU capacity.
HLS is one example of an ABS streaming protocol. HLS is a HTTP-based media streaming communications protocol that involves breaking the media stream into a sequence of file downloads. Each file may be downloaded as one portion of a transport stream. Each downloaded file may be played in sequence to present a continuous media stream. As a given stream is played, the client may choose from multiple different alternative streams containing the same content encoded at various data rates. At the beginning of a streaming session, the media playing client downloads a playlist file that specifies the different or alternate streams that are available. In HLS, a given multimedia presentation is specified by a Uniform Resource Identifier (URI) to the playlist file, which itself consists of an ordered list of media URIs and informational tags. Each media URI refers to a media file that is a segment of a single continuous media stream. To play a stream, a media playing client first obtains the playlist file, and then obtains and plays each media file in the playlist in sequence. In HLS, the playlist is organized as set forth in the Internet Draft of “HTTP Live Streaming” dated Nov. 19, 2010.